package control;

import model.Usuario;
import service.UsuarioService;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.ListDataModel;

public class UsuarioMB {

    private UsuarioService usuarioService = new UsuarioService();
    private Usuario usuarioCorrente = new Usuario();
    private List<Usuario> listaUsuario;
    private ListDataModel lista2;

    private void reiniciarUsuarioCorrente() {
        usuarioCorrente = new Usuario();
    }

    private void reiniciarListaUsuario() {
        listaUsuario = new ArrayList<Usuario>();
    }

    public String enviar() {
        return "enviar";
    }

    public String irHome() {
        return "irHome";
    }

    public String getPorNome() {
        listaUsuario = usuarioService.getPorNome(usuarioCorrente.getNome());
        if (!listaUsuario.isEmpty()) {
            return "achou";
        }
        return "falhou";
    }

    public UsuarioService getUsuarioService() {
        return usuarioService;
    }

    public void setUsuarioService(UsuarioService usuarioService) {
        this.usuarioService = usuarioService;
    }

    public Usuario getUsuarioCorrente() {
        return usuarioCorrente;
    }

    public void setUsuarioCorrente(Usuario usuarioCorrente) {
        this.usuarioCorrente = usuarioCorrente;
    }

    public ListDataModel getLista2() {
        return lista2;
    }

    public void setLista2(ListDataModel lista2) {
        this.lista2 = lista2;
    }

    public List<Usuario> getListaUsuario() {
        return listaUsuario;
    }

    public void setListaUsuario(List<Usuario> listaUsuario) {
        this.listaUsuario = listaUsuario;
    }

    public String inserir() {
//        if (usuarioService.inserirUsuario(usuarioCorrente)) {
//            return "inserido";
//        }
        return "preexistente";
    }

    public String preparar() {
        reiniciarUsuarioCorrente();
        return "cadastraUsuario";
    }

    public String buscarUsuarioPorMatricula() {
        if (usuarioCorrente == null || usuarioCorrente.getMatricula() == null) {
            return "buscapormatriculavazia";
        }
        usuarioCorrente = usuarioService.getPorMatricula(usuarioCorrente.getMatricula());
        if (usuarioCorrente != null) {
            return "buscapormatriculacontemum";
        }
        return "buscapormatriculavazia";
    }

    public String novaBusca() {
        reiniciarUsuarioCorrente();
        return "buscaUsuarioMatricula";
    }

    public String listarUsuario() {
        reiniciarListaUsuario();
        listaUsuario = usuarioService.listarUsuario();
        lista2 = new ListDataModel(listaUsuario);
        if (listaUsuario.isEmpty()) {
            return "buscapormatriculavazia";
        }
        return "listadeusuarios";

    }

    public String remover() {
        usuarioCorrente = (Usuario) lista2.getRowData();
        return usuarioService.removerUsuario(usuarioCorrente);
    }

    public String editar() {
        usuarioService.editarUsuario(usuarioCorrente);
        return "edicaoOK";
    }

    public String prepararEdicao() {
        usuarioCorrente = (Usuario) lista2.getRowData();
        return "paraeditar";
    }
}
